software launch

Zo breng je software soepel tot leven en hou je de controle

1 juli 2021

BizDevOps

Wanneer gebouwde software uitgebreid getest is, wordt het tijd voor de release zodat de gebruikers kunnen kennismaken met de nieuwe functionaliteit(en). Als iets tot leven komt, moet je het voor een stuk loslaten. Uiteraard moet dit gecontroleerd gebeuren. Er bestaan verschillende strategieën om die livegang zoveel mogelijk in de hand te houden. Daarnaast is inzetten op observability, om op te volgen of de software naar behoren werkt, maar ook wordt gebruikt zoals bedoeld, een slimme zet. Ontdek hoe dit alles in z’n werk gaat.

Een vlotte overgang van build naar run

Tijdens vorige blogs hebben we gesproken over de continuous delivery flow. Dit bevat alles wat nodig is om met een korte doorlooptijd en op een iteratieve en veilige manier software naar productie te brengen. De verantwoordelijkheid blijft bij die overgang bij hetzelfde team. Dit is een gevolg van de DevOps-attitude: you build it, you run it. Het bouwen en in de lucht houden van een stuk software wordt dus niet losgekoppeld van elkaar, enkel de spelregels veranderen.

Om dit te duiden, duiken we even in de manier van werken van NASA. Zij maken een duidelijk verschil tussen launch control en mission control. Launch control is verantwoordelijk tot de teller op 0 staat en de raket ontsteekt. Totdat punt kunnen ze op elk moment afbreken. Dit is te vergelijken met een continuous delivery pipeline die ingebouwde checks bevat en het proces kan onderbreken als er niet aan de minimale eisen wordt voldaan. Echter, eens de raket vertrokken is, neemt mission control het over omdat het vanaf dan onmogelijk is om de vliegende raket zomaar te stoppen. Alles wordt gemonitord, als er iets voorvalt kunnen ze nog proberen om de schade te beperken. Dit kan je deels vergelijken met het in productie brengen van software. Als het live staat en de gebruikers gaan ermee aan de slag, is het niet zo eenvoudig om dit terug om te keren. Gelukkig bestaan er wel enkele releasestrategieën waarbij we meer controle houden dan in de ruimtevaart.

 

 

Releasestrategieën om de controle zoveel mogelijk in de hand te houden

Door een opsplitsing te maken tussen deployment van een nieuwe versie van bepaalde artifacts en de release van bepaalde features, gaat er een hele wereld aan mogelijkheden open. Deploy gaat over de binaries (een reeks uitvoerbare bestanden die een bepaalde functie zullen uitvoeren) terwijl release over de functionaliteit gaat. In te veel gevallen gaan deze twee zaken samen. Met volgende strategieën hou je veel meer de controle:

  • Blue-geen deploy: er wordt een nieuwe versie naast de oude gezet. Een zelfgekozen pilootgroep van gebruikers krijgt toegang tot de nieuwe versie zodat ze deze in productie kunnen testen. Als alles goed verloopt kan de switch worden gemaakt zodat iedereen de nieuwe versie gebruikt.
     
  • Canary release: deze strategie heeft z’n naam te danken aan de kleine gele vogeltjes die vroeger gaslekken in mijnen vroegtijdig opspoorden. Ook hier staan er weer twee versies naast elkaar. Een willekeurige 10% van de gebruikers krijgt via load balancing de nieuwe versie te zien. Dat percentage wordt stillaan omhoog getrokken. Als er iets verkeerd gaat, daalt het percentage weer.
     
  • Feature flags: bepaalde nieuwe features zijn al wel beschikbaar in de code, maar nog niet zichtbaar voor gebruikers. Dit maakt testen in productie mogelijk. Het is zelfs niet ondenkbaar dat een gebruiker de keuze krijgt of hij het oude scherm van een bepaalde feature gebruikt of al het nieuwe. Zij krijgen dan ‘wil je de bèta versie al testen’-vraag voorgeschoteld.  Tevens is het op basis hiervan ook eenvoudiger om auto-healing concepten in te bouwen. Als het monitoringsysteem detecteert dat er een probleem is met de nieuwe feature sinds de activatie van een bepaalde feature flag, kan die bijvoorbeeld automatisch terug afgezet worden.

 

observability

Hou alles in de gaten met de juiste observability tool

In ieder geval is monitoring niet weg te denken binnen eender welke DevOps-context. Als je end-to-end verantwoordelijk bent, wil je immers zeer goed weten wat er aan het gebeuren is. Tegenwoordig wordt er veel gesproken over observability. Dit is de mate waarin een systeem tijdens z’n run time info over zichzelf vrijgeeft. Een black box waarbij je niet weet wat er gebeurt, is zo verleden tijd. Logs, metrics en traces zijn daarbij de basispijlers, maar je kan nog veel verder gaan qua monitoring om de controle in handen te houden. Zo is Real User Monitoring in onze hedendaagse wereld, waarin de gebruikerservaring centraal staat, erg belangrijk. Dit soort monitoring brengt de gebruikerservaring in kaart, denk bijvoorbeeld aan parameters als klikgebied.  

Door al die gegevens in een bepaalde context te plaatsen, kom je uiteindelijk tot zaken die om aandacht vragen. Op basis van die info kan AI ingezet worden voor automatische probleemdetectie met root-cause analyse en businessimpact detectie. Dynatrace is een platform dat dit alles mogelijk maakt. Een software intelligence systeem zoals Dynatrace bewaakt immers permanent alle aspecten van een applicatielandschap. Application Performance Monitoring (APM) staat al lang niet meer op zichzelf. De diepgaande automatisatie die Dynatrace vandaag biedt, zorgt ervoor dat we een AIOps-aanpak kunnen hanteren. Het productteam bekomt hierdoor een enorme en voortdurende stroom van informatie, daarom wordt het ook continuous feedback genoemd. Ook voor de business is deze info van cruciaal belang, zo kunnen ze valideren of de software wel gebruikt wordt zoals initieel bedoeld en of het de beoogde resultaten realiseert. De grote feedback loop die we in de eerste blog van deze reeks bespraken (“bouwen we de juiste zaken”) kan o.a. op deze manier gevoed worden.  Dat kan zelfs aan de hand van Service Level Objectives (SLO’s). Dit zijn zelfgekozen variabelen die een doelstelling vertegenwoordigen. Denk bijvoorbeeld aan het percentage klanten die hun winkelkar ook effectief afrekenen.

Dit systeem kan trouwens ook ingezet worden in testomgevingen, om problemen op te sporen alvorens ze gereleased worden. Dit is een integraal onderdeel van heel het ‘shift left’-gebeuren. Er bestaat zelfs een systeem (Keptn) waarbij load testing automatisch uitgevoerd en gevalideerd kan worden op basis van geavanceerde observability data.

 

Graag meer weten over de gehele agile software ontwikkeling flow?

Lees ook de andere blogs uit deze reeks:

Ontdek alle blogs
Lees meer

Schrijf je in en ontvang onze blogs in je mailbox